home *** CD-ROM | disk | FTP | other *** search
/ PC Graphics Unleashed / PC Graphics Unleashed.iso / ch03 / load.c < prev    next >
C/C++ Source or Header  |  1993-06-11  |  2KB  |  91 lines

  1. /****************************************************************
  2. * FILE:    load.c
  3. * DESC:    This program loads a PCX file or a list of them.
  4. *        It crams as many into memory as it can, then it flips
  5. *        quickly through them.
  6. * HISTORY:    Created     1/13/1993
  7. * LAST CHANGED:  3/20/1993
  8. *    Copyright (c) 1993 by Scott Anderson
  9. *
  10. ****************************************************************/
  11.  
  12. /* ----------------------INCLUDES----------------------------- */
  13.  
  14. #include <conio.h>
  15. #include <stdio.h>
  16. #include <io.h>
  17. #include <math.h>
  18. #include <graph.h>
  19. #include <string.h>
  20.  
  21. #include "define.h"
  22.  
  23. /* ----------------------EXTERNALS---------------------------- */
  24.  
  25. /* External functions */
  26. extern int    quitCheck();
  27. extern LINKED_LIST    *rootSequence(int argc, char *argv[]);
  28.  
  29. /* External variables */
  30. extern int    Wait;
  31. extern int     Key;
  32. extern int    EndWait;
  33.  
  34. /* ----------------------GLOBAL DATA-------------------------- */
  35.  
  36. PICTURE *Src[MAX_FILES];            /* source picture pointer */
  37.  
  38. /*****************************************************************
  39. * FUNC: main (int argc, char *argv[])
  40. * DESC: Display the file or sequence passed on the command line.
  41. *        Read in as many files as will fit in memory, then display
  42. *        them in a loop, forward and backward.
  43. *****************************************************************/
  44.  
  45. main (int argc, char *argv[])
  46. {
  47.     int file, fileNum;
  48.     int direction;
  49.     int i;
  50.     LINKED_LIST *pcxList;
  51.     LINKED_LIST *pcxListHead;
  52.     
  53.     if (argc == 1) {
  54.         printf("Usage: load <name>\n\n");
  55.         printf("Where: <name> is the root name of a sequence\n");
  56.         exit(23);
  57.     }
  58.     setGraphicsMode();
  59.  
  60.     file = 1;
  61.     pcxListHead =  rootSequence(argc, argv);
  62.     for (pcxList=pcxListHead; pcxList; pcxList = pcxList->next) {
  63.         Src[file] = loadPicture(pcxList->str);
  64.         if (Src[file] == NULL)
  65.             break;
  66.         displayPicture(Src[file++]);
  67.     }
  68.  
  69.     fileNum = file - 1;
  70.     if (fileNum == 1)    /* there's only one file */ 
  71.         waitForKey();    /* so wait for the user to quit */
  72.     else if (fileNum > 1) {
  73.         file = 1;
  74.         direction = 1;
  75.         while (!(quitCheck())) {
  76.             if ((file += direction) >= fileNum)
  77.                 direction = -1;
  78.             if (file <= 1)
  79.                 direction = 1;
  80.             displayPicture(Src[file]);
  81.             if (EndWait && (file == 1 || file == fileNum))
  82.                 wait(Wait);
  83.         }
  84.     }
  85.     /* Reset to original mode, then quit */
  86.     setTextMode();
  87. }
  88.